graph TD
    A[开始] --> B[初始化 BZhan 对象]
    B --> C[调用 main 方法]
    C --> D[打印爬取计划]
    D --> E[循环爬取每一页数据]
    E --> F[获取当前页数据]
    F -->|成功| G[解析当前页数据]
    F -->|失败| H[打印失败信息并跳过]
    G --> I[随机延时]
    I --> J[检查是否完成所有页数]
    J -->|否| E
    J -->|是| K[打印爬取完成信息]
    K --> L[保存数据到 JSON 文件]
    L --> M[保存数据到数据库]
    M --> N[结束]

    subgraph 获取当前页数据
        F1[发送 GET 请求]
        F1 -->|成功| F2[解析响应数据]
        F1 -->|失败| H
        F2 -->|成功| G
        F2 -->|失败| H
    end

    subgraph 解析当前页数据
        G1[遍历视频数据]
        G1 --> G2[解析每个视频数据项]
        G2 --> G3[添加解析结果到结果列表]
        G3 --> G4[继续下一个数据项]
        G4 --> G1
    end

    subgraph 保存数据到 JSON 文件
        L1[构建文件路径]
        L1 --> L2[打开文件并写入数据]
    end

    subgraph 保存数据到数据库
        M1[创建数据库连接]
        M1 --> M2[创建表]
        M2 --> M3[保存数据到数据库]
    end
